home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / cnet / wordo.lha / wordo2.3 < prev    next >
Text File  |  1995-10-07  |  21KB  |  503 lines

  1. /**************************************************************************\
  2.                  $VER: Wordo, v2.3 (7-Oct-95) by Dotoran!
  3. \**************************************************************************/
  4. options results ; signal on SYNTAX ; signal on ERROR ; signal on IOERR
  5.  
  6. tr=transmit ; se=sendstring ; getuser 1 ; handle=result
  7. mstring='Yes Yes Think Yes 0' ; changewhere 'Wordo 2.3 Game'
  8.  
  9. scorepath = 'pfiles:single/wordo2.3.scores'  /* Where scores are stored. */
  10.  docspath = 'pfiles:single/wordo2.3.docs'    /* Where docs are stored.   */
  11. titlepath = 'pfiles:single/wordo2.3.title'   /* Where title screen is.   */
  12.    access = 31                               /* Access of ID # 1 SysOp.  */
  13.  
  14. if ~exists(scorepath) then call MAKESCORES
  15.  
  16. MAINT:
  17.         call READMAINT ; getuser 15 ; ac=result
  18.         if ac~=access then signal TITLE
  19.         se 'c7n2Enter c5WORDO c7Maintenance? c3(c6yc3/c6Nc3)c7: c5'
  20.         getchar ; an=result ; call CUTOFF
  21.         if an~='Y' then do ; tr 'No.' ; signal TITLE ; end
  22.         tr 'Yes.' ; fl=0
  23.     call MAINT2
  24.  
  25. TITLE:
  26.         se '*4'titlepath'}'
  27.         se 'c7Need instructions? c3(c6yc3/c6Nc3)c7: c5' ; getchar
  28.         an=result ; call CUTOFF ; if an~="Y" then do ; tr 'No' ; signal START ; end
  29.         tr 'Yes' ; tr '@4#0'docspath'}' ; exit
  30.  
  31. START:
  32.         call WORDS ; call POINTS ; call SHOWSCORES
  33.  
  34.         turns=0 ; myturns=0 ; totpips=0 ; mytotpips=0 ; first=0
  35.         elim=1 ; mypick=1 ; mypick1=0 ; ghint=''
  36.  
  37.         comstr='f0nfn5>f>f>f>b'
  38.  
  39.         se 'n1c6Do you wish to go first? c7(c3Yc7/c3nc7)c6:c2 '
  40.         call GCHAR ; fm=1 ; if an="N" then fm=0
  41.  
  42.         if m4~='Yes' then do ; hint=0 ; signal START2 ; end
  43.         se 'n1c6Do you want the c2HINT c6option? c7(c3Yc7/c3nc7)c6: c2'
  44.         call GCHAR ; hint=0 ; if an~="N" then hint=1
  45.  
  46. START2:
  47.         tr 'f1'
  48.         if fm=1 then call YOUCHOOSE
  49.         if fm=0 then call ICHOOSE
  50.     signal BOARD
  51.  
  52. YOUCHOOSE:
  53.         se 'f0n6c3Pick start letter: c6(c7Ac6-c7zc6)c3:  h1c5'
  54.         lo=1 ; hi=5 ; getchar ; an=result ; call CUTOFF ; tr an
  55.         av=pos(an,'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ')
  56.         if av=0 then signal YOUCHOOSE
  57.         call YOUCHOOSE2 ; signal DISPLAY
  58.    return
  59.  
  60. YOUCHOOSE2:
  61.         a1=a.av ; av=av+1 ; a2=a.av ; av=av-1
  62.         do i=1  to 10 ; w.i=subword(a1,i,1)    ; end
  63.         do i=11 to 20 ; w.i=subword(a2,i-10,1) ; end
  64.         f1=0 ; f2=0
  65.    return
  66.  
  67. DISPLAY:
  68.         w=w.lo ; w1=upper(left(w,1)) ; iv=hi/5
  69.         tr 'f0n8z7c1Words:z0 c6'w1'c7-c6'iv'n1'
  70.         do i=0 to 4 ; in=lo+i ; tr 'c7'i+1'. c2'w.in ; end
  71.         tr 'n1c6Fc7. c6Fc7orwardn1c6Bc7. c6Bc7ackward'
  72.         se 'c6Lc7. c7New c6Lc7ettern2c3Choice:  h1c5'
  73.         getchar ; an=result ; call CUTOFF ; tr an'n1' ; a=pos(an,'12345')
  74.         if a>0  then call CHOSE
  75.         if an=f then call FORWARD
  76.         if an=b then call BACKUP
  77.         if an=l then call YOUCHOOSE
  78.    signal DISPLAY
  79.  
  80. CHOSE:
  81.         in=(lo+a)-1 ; yourword=w.in
  82.         if fm=1 then signal ICHOOSE
  83.    signal BOARD
  84.  
  85. BACKUP:
  86.         lo=lo-5 ; hi=hi-5
  87.         if lo<1 then do ; f1=1 ; call MOVE ; call YOUCHOOSE2 ; end
  88.    return
  89.  
  90. FORWARD:
  91.         lo=lo+5 ; hi=hi+5
  92.         if hi>20 then do ; f2=1 ; call MOVE ; call YOUCHOOSE2 ; end
  93.    return
  94.  
  95. MOVE:
  96.         if f1=1  then do ; av=av-2 ; lo=16 ; hi=20 ; end
  97.         if f2=1  then do ; av=av+2 ; lo=1  ; hi=5  ; end
  98.         if av<1  then do ; av=51   ; lo=16 ; hi=20 ; end
  99.         if av>51 then do ; av=1    ; lo=1  ; hi=5  ; end
  100.    return
  101.  
  102. ICHOOSE:
  103.         t1=random(1,52,time('s')) ; a1=a.t1
  104.         t1=random(1,10,time('s'))
  105.         myword=subword(a1,t1,1)
  106.         if fm=0 then signal YOUCHOOSE
  107.  
  108. BOARD:
  109.        se 'f1@4     z7c1HUMANz0 z7c4PIPSz0      z7c1HUMANz0 z7c4PIPSz0  c3(c5'yourword
  110.        tr 'c3)    z7c4AMIGAz0 z7c1PIPSz0      z7c4AMIGAz0 z7c1PIPSz0n1'
  111.        tr 'c7100  c6_____  c2_    c750  c6_____  c2_          c7100  c6_____  c2_    c750  c6_____  c2_'
  112.        tr 'c7 95  c6_____  c2_    c745  c6_____  c2_          c7 95  c6_____  c2_    c745  c6_____  c2_'
  113.        tr 'c7 90  c6_____  c2_    c740  c6_____  c2_          c7 90  c6_____  c2_    c740  c6_____  c2_'
  114.        tr 'c7 85  c6_____  c2_    c740  c6_____  c2_          c7 85  c6_____  c2_    c740  c6_____  c2_'
  115.        tr 'c7 80  c6_____  c2_    c740  c6_____  c2_          c7 80  c6_____  c2_    c740  c6_____  c2_'
  116.        tr 'c7 75  c6_____  c2_    c740  c6_____  c2_          c7 75  c6_____  c2_    c740  c6_____  c2_'
  117.        tr 'c7 70  c6_____  c2_    c735  c6_____  c2_          c7 70  c6_____  c2_    c735  c6_____  c2_'
  118.        tr 'c7 65  c6_____  c2_    c735  c6_____  c2_          c7 65  c6_____  c2_    c735  c6_____  c2_'
  119.        tr 'c7 60  c6_____  c2_    c735  c6_____  c2_          c7 60  c6_____  c2_    c735  c6_____  c2_'
  120.        tr 'c7 55  c6_____  c2_    c735  c6_____  c2_          c7 55  c6_____  c2_    c735  c6_____  c2_n1'
  121.        tr 'c21c7: c6A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'
  122.        tr 'c22c7: c6A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'
  123.        tr 'c23c7: c6A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'
  124.        tr 'c24c7: c6A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'
  125.        tr 'c25c7: c6A B C D E F G H I J K L M N O P Q R S T U V W X Y Zn1'
  126.  
  127.        tr 'z7 c0Menu:  [c1Ec0]c4nter a guess   c0[c1Sc0]c4trike a letter    z0'
  128.        tr '       z7 c0[c4Cc0]c1hoose alphabet c0[c4Rc0]c1eplace a letter   z0'
  129.        tr '       z7 c0[c1Qc0]c4uit the game   c0[c1Hc0]c4ighlight a letter z0'
  130.        if hint=1 then tr 'f0ndn7z5 z0c3Hint:z5 z0n1z5 z0     z5 z0'
  131.        tr 'f0ndz7c11z0'
  132.  
  133.        if fm=1 then signal PLAY
  134.        if fm=0 then signal MYPLAY
  135.  
  136. PLAY:
  137.        se 'f0n9n9n1>f>f>f>bz7c1 Menu:z0  c6' ; getchar
  138.        co=result ; call CUTOFF ; z=pos(co,"ECQSRH") ; if z=0 then signal PLAY
  139.        if co=Q then do ; tr 'Quit Game' ; signal FINISH ; end
  140.        if co=C then do ; tr 'Choose' ; call CHOOSE   ; end
  141.        if co=E then do ; tr 'Enter'  ; call YOUCHOOSE2 ; signal ENTER ; end
  142.        if co=S then do ; tr 'Strike'     ; signal STRIKE     ; end
  143.        if co=R then do ; tr 'Replace'    ; signal REPLACE    ; end
  144.        if co=H then do ; tr 'Highlight'  ; signal HIGHLIGHT  ; end
  145.     signal PLAY
  146.  
  147. ENTER:
  148.        tr 'f0n9n3' ; do i=0 to 4 ; in=lo+i
  149.        tr '>9>9>9>9>9>bc7'i+1'. c2'w.in ; end
  150.        tr 'f0n9n4>f>f>f>f>5c7[c1Fc7]c3orward'
  151.        tr 'n1>f>f>f>f>5c7[c1Bc7]c3ackup'
  152.        tr 'n1>f>f>f>f>5c7[c1Lc7]c3etter'
  153.        se 'n1>f>f>f>bz7c4 Choose:z0        h7c6' ; getchar
  154.        an=result ; call CUTOFF ; a=pos(an,"12345") ; aa=pos(an,"12345FBL")
  155.        if a>0  then do ; tr '       '    ; signal CHOSE2  ; end
  156.        if an=f then do ; tr 'Forward'    ; call FORWARD   ; end
  157.        if an=b then do ; tr 'Backup'     ; call BACKUP    ; end
  158.        if an=l then do ; se 'Letter!1<e' ; signal ENTER2 ; end
  159.        if aa=0 then signal PLAY
  160.    signal ENTER
  161.  
  162. ENTER2:
  163.         se 'c6Which Onec3: c5' ; call GETLET
  164.         av=letter ; call YOUCHOOSE2 ; call CLINE
  165.    signal ENTER
  166.  
  167. CHOSE2:
  168.         in=(lo+a)-1 ; guess=w.in ; turns=turns+1
  169.         co='c6' ; if turns//2=0 then co='c2'
  170.         if turns>10 then signal CHOSE3
  171.         pr='f0n1' ; po=turns ; call POSITION
  172.         pr=pr||'n'mt'>5'co ; se pr||guess
  173.    signal GETPIPS
  174.  
  175. CHOSE3:
  176.         pr='f0n1' ; po=turns ; call POSITION
  177.         pr=pr||'n'mt'>f>6'co ; se pr||guess
  178.    signal GETPIPS
  179.  
  180. GETPIPS:
  181.         pips=0 ; do i=1 to 5 ; co1=substr(myword,i,1)
  182.         co2=substr(guess,i,1) ; if co1=co2 then pips=pips+1 ; end
  183.         co='c2' ; if turns//2=0 then co='c6'
  184.         if guess=myword then do ; totpips=totpips+pt.turns
  185.         tr '  z1c7'totpips'z0' ; signal WIN ; end
  186.         if pips=5 then pips=10
  187.         tr '  'co||pips ; totpips=totpips+pips
  188.         if totpips%5>0 then ghint=right(myword,(totpips%5))
  189.         if hint=1 then tr 'f0ndn8>1c2'right(ghint,5,' ')
  190.         if turns=20 & myturns=20 then signal FINISH2
  191.     signal MYPLAY
  192.  
  193. WIN:
  194.         tr 'f0nfn4>f>f>f>f>5z1c7You won!z0'
  195.         if totpips>49 then do ; tp=totpips ; call CHECKSCORES ; end
  196.    signal FINISH2
  197.  
  198. CHOOSE:
  199.         se comstr'c6Which: c3(c21c3-c25c3)c6: c5' ; getchar
  200.         el=elim ; elim=result ; a=pos(elim,"12345")
  201.         if a=0 then elim=1
  202.  
  203. CHOOSE2:
  204.         pr='f0nc' ; do i=1 to el   ; pr=pr||'n1' ; end
  205.         tr pr'c2'el
  206.         pr='f0nc' ; do i=1 to elim ; pr=pr||'n1' ; end
  207.         tr pr'z7c1'elim'z0' ; call CLINE
  208.    return
  209.  
  210. STRIKE:
  211.         se comstr'c6Which letterc3? c5' ; call GETLET
  212.         tr pr'>2c0 ' ; call CLINE ; call SETELIM
  213.    signal PLAY
  214.  
  215. REPLACE:
  216.         se comstr'c6Which letterc3? c5' ; call GETLET
  217.         tr pr'>2c6'upper(le) ; call CLINE ; call SETELIM
  218.    signal PLAY
  219.  
  220. HIGHLIGHT:
  221.         se comstr'c6Which letterc3? c5' ; call GETLET
  222.         tr pr'>2z7c5'upper(le)'z0' ; call CLINE ; call SETELIM
  223.    signal PLAY
  224.  
  225. MYPLAY:
  226.         myturns=myturns+1 ; mypips=0 ; call time('r')
  227.         tr 'f0nfn4>f>f>f>f>5c7o1My turn.o0'
  228.  
  229. MYPLAY2:
  230.         se comstr'c3Thinking: c5'time('e') ; et=time('e')
  231.         if et>think then do ; call GETWORD ; signal MP1 ; end
  232.         a1=random(1,52,time('s'))  ; a2=random(1,10,time('s'))
  233.         if myturns>10 then call GETWORD
  234. MP1:
  235.         myguess=subword(a.a1,a2,1) ; uw.myturns=myguess
  236.         if myturns>1 then signal USEDWORDS
  237. MP2:
  238.         call SHOWWORD ; call GETMYPIPS
  239.         if mypips=0 then call BADLETTERS
  240.         co='c6' ; if myturns//2=0 then co='c2'
  241.         if myguess=yourword then do ; mytotpips=mytotpips+pt.myturns
  242.             tr 'z4c7'mytotpips'z0' ; signal IWIN ; end
  243.         if mypips=5 then mypips=10
  244.         mytotpips=mytotpips+mypips
  245.         tr co||mypips ; call CLINE
  246.         if myturns=20 & turns=20 then signal FINISH2
  247.     signal PLAY
  248.  
  249. GETWORD:
  250.         mypick1=mypick1+1 ; mypick2=mypick
  251.         if mypick1>52 then do ; mypick1=1 ; mypick=mypick+1
  252.             signal GETWORD ; end
  253.         a1=mypick1 ; a2=mypick2 ; se '  h2c1-E '
  254.     return
  255.  
  256. USEDWORDS:
  257.         do i=1 to myturns-1
  258.         if uw.i=myguess then signal MYPLAY2
  259.         end ; do i=1 to 5 ; a1=substr(myguess,i,1)
  260.         do j=1 to length(wo.i) ; a2=substr(wo.i,j,1)
  261.         if a1=a2 then signal MYPLAY2
  262.         end j ; end i
  263.     signal MP2
  264.  
  265. SHOWWORD:
  266.         pr='f0n1' ; po=myturns ; call POSITION
  267.         co='c2' ; if myturns//2=0 then co='c6'
  268.         if myturns<11 then pr=pr||'n'mt'>f>f>e'co
  269.         if myturns>10 then pr=pr||'n'mt'>f>f>f>f'co
  270.         se pr||myguess'  '
  271.     return
  272.  
  273. GETMYPIPS:
  274.         do i=1 to 5
  275.         a1=substr(yourword,i,1)
  276.         a2=substr(myguess ,i,1)
  277.         if a1=a2 then mypips=mypips+1
  278.         end
  279.     return
  280.  
  281. BADLETTERS:
  282.         do i=1 to 5
  283.         wo.i=wo.i||substr(myguess,i,1)
  284.         end
  285.     return
  286.  
  287. IWIN:
  288.         call CLINE ; tr 'f0nfn4>f>f>f>f>5z4c7I won!z0'
  289.         if mytotpips>49 & m1='Yes' then do ; tp=mytotpips
  290.             call CHECKSCORES ; end
  291.     signal FINISH2
  292.  
  293. WORDS:
  294.         a.1 ='aback abate abbey abhor abide abode abort above acerb acute'
  295.         a.2 ='adapt addle altar amaze amour angel angle apart argue asset'
  296.         a.3 ='bacon badge baker balmy beast beech begin below berry bilge'
  297.         a.4 ='binge biome biped bogey bongo boost boxer budge bumpy burst'
  298.         a.5 ='cable cadet calve caste cedar chain charm chime chock churn'
  299.         a.6 ='clamp clock coast cobra colon coral count court curse cycle'
  300.         a.7 ='daffy daily dance dandy daunt death debug decay demon diary'
  301.         a.8 ='digit dingy dippy ditch diver divot donor douse dowry draft'
  302.         a.9 ='earth ebony eerie eject elbow elder elegy elope elude ember'
  303.         a.10='emery empty endow enemy enjoy enter epoch equip erase every'
  304.         a.11='fable faint fairy false feast felon fence ferry field fiber'
  305.         a.12='fight fight folly foray force forge fudge fungi fussy fuzzy'
  306.         a.13='gamma gaudy gauge gavel genre genus ghost ghoul girth giver'
  307.         a.14='gland glaze gleam glory glove goose gouge grace grand guilt'
  308.         a.15='habit handy happy harsh heart heave heavy hefty hinge hitch'
  309.         a.16='hoard hoist holly honey honor human humid humor hutch hydro'
  310.         a.17='ideal idiot idler image impel imply index indue inert ingot'
  311.         a.18='inker inkle inlaw inlay inlet inner input irony itchy ivory'
  312.         a.19='jaded jaunt jelly jewel jiffy joint joist joker jolly joule'
  313.         a.20='joust judge juice juicy julep jumpy junky jurat jurel juror'
  314.         a.21='kaput karat karma kayak ketch khaki kicky kinky kithe kitty'
  315.         a.22='klutz knack knave knead knife knock known koala kvass kylix'
  316.         a.23='label labor ladle lapse leafy leaky leash least libel libra'
  317.         a.24='light limbo lobby locus lodge logic lucky lumpy lurch lymph'
  318.         a.25='macaw macro madam madly mealy meant medal melon micro midst'
  319.         a.26='might milky model money mooch moody mucky mulch music musky'
  320.         a.27='nakad nasal nasty naval needy neigh nerve never niche niece'
  321.         a.28='night ninth noble noisy north nosey nudge nurse nutty nymph'
  322.         a.29='oasis occur ocean offer often okapi olive omega onset optic'
  323.         a.30='orbit order organ osier other ounce ovary ovine oxide ozone'
  324.         a.31='paced padre pagen paint peace peach pearl pecan piano piece'
  325.         a.32='pilot pitch point poise poker polar puffy pulse punch pupil'
  326.         a.33='quack quaff quail quake quaky qualm quark quart queen queer'
  327.         a.34='quell query quest queue quick quiet quill quilt quirk quote'
  328.         a.35='rabbi rabid radio radon reach react ready rebus rider ridge'
  329.         a.36='right rigid roach roast rocky rogue ruler rummy rumor rural'
  330.         a.37='saber sable saint salon sedan sedge seedy seize siege sieve'
  331.         a.38='sight silly soapy sober solar solid suave suede sugar suite'
  332.         a.39='table taboo tacky taken teach teddy teeth tempo tidal tiger'
  333.         a.40='tight tilde toast today token tonic tuber tulip tuner tutor'
  334.         a.41='ulcer ultra unarm uncle uncut under undue untie unzip upend'
  335.         a.42='upper upset urban uredo urine usage usher usual utter uvula'
  336.         a.43='vague valet valid value venom venue verge verse vicar video'
  337.         a.44='vigil vigor villa viola viper virus visit visor voice vomit'
  338.         a.45='wafer wager wagon waist weary weave wedge weigh widow wield'
  339.         a.46='wince windy woman women woody world wound wrack wrath wreck'
  340.         a.47='xebec xenia xenon xeric xylan xylem zebra zilch zippy zonal'
  341.         a.48='xebec xenia xenon xeric xylan xylem zebra zilch zippy zonal'
  342.         a.49='yamen yearn yeast yield yodel yokel young yours youth yummy'
  343.         a.50='yamen yearn yeast yield yodel yokel young yours youth yummy'
  344.         a.51='zaire zebra zilch zippy xenia zonal xenon xeric xylan xylem'
  345.         a.52='zaire zebra zilch zippy xenia zonal xenon xeric xylan xylem'
  346.    return
  347.  
  348. POINTS:
  349.         pt=1 ; do i=100 to 45 by -5 ; pt.pt=i ; pt=pt+1 ; end
  350.         do i=1 to 4  ; pt.pt=40 ; pt=pt+1 ; end
  351.         do i=1 to 4  ; pt.pt=35 ; pt=pt+1 ; end
  352.         do i=1 to 20 ; uw.i=""  ; end
  353.         do i=1 to 5  ; wo.i=""  ; end
  354.    return
  355.  
  356. GETLET:
  357.         getchar ; le=result ; call CUTOFF
  358.         letter=pos(le,"ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  359.         if letter=0 then signal GETLET ; else se le
  360.         letter=letter*2-1 ; pr='f0ncn'elim
  361.         do i=1 to letter ; pr=pr||'>1' ; end
  362.    return
  363.  
  364. CLINE:
  365.         se 'f0nfn4>f>f>f>f>4             '
  366.         se comstr'                  '
  367.    return
  368.  
  369. SETELIM:
  370.         el=elim ; elim=elim+1 ; if elim>5 then elim=1
  371.         call CHOOSE2
  372.    return
  373.  
  374. POSITION:
  375.         if po<11 then mt=substr("123456789a",po,1)
  376.         if po>10 then do ; po=po-10
  377.         mt=substr("123456789a",po,1) ; end
  378.    return
  379.  
  380. GCHAR:
  381.         getchar ; an=result ; call CUTOFF
  382.         if an="N" then tr 'No.'
  383.                   else tr 'Yes.'
  384.    return
  385.  
  386. SHOWSCORES:
  387.         tr 'f1n4>az7c1      W  O  R  D  O      z0'
  388.         tr '>az1c7  H I G H   S C O R E S  z0'
  389.         tr '>ac5========================='
  390.         call open(file,scorepath,'r') ; s0=readln(file)
  391.         do i=1 to 5 ; s0=readln(file)
  392.         parse var s0 1 n.i 21 s.i + 20
  393.         tr '>az4c3 'n.i'c6'left(s.i,4,' ')
  394.         tr '>az0c5-------------------------'
  395.         end ; call close(file)
  396.     return
  397.  
  398. MAKESCORES:
  399.         se 'n1c3Please hold...'
  400.         s1='No One Yet          50 '
  401.         call open(file,scorepath,'w')
  402.         call writeln(file,mstring)
  403.         do 5 ; call writeln(file,s1) ; end
  404.         call close(file)
  405.         tr 'c6Thanks!'
  406.     return
  407.  
  408. CHECKSCORES:
  409.         if tp<s.5 then return
  410.         se comstr'z3c4 Congratulations! z0'
  411.         tr '!1<9<9c7 A New High Score'
  412.         if m2='Yes' & tp~=mytotpips then do ; getuser 1 ; handle=result
  413.         tr 'f0nc' ; sp=copies(" ",78) ; do i=1 to 5 ; tr sp ; end i
  414.         tr 'f0ndc3Type an c6alias c3to use in the c5High Scores c3file, or'
  415.         tr 'simply press c7ENTER/RETURN c3to use your current handle.n1'
  416.         se 'c7=> c2' ; receive ; an=result ; call CUTOFF ; if an~='' then handle=an
  417.         end ; do i=1 to 5 until tp>=s.i ; end
  418.         do j=5 to i by -1 ; jj=j-1
  419.         n.j=n.jj ; s.j=s.jj ; end
  420.         n.i=left(handle,20,' ') ; s.i=tp
  421.         if tp~=totpips then n.i=left('The Amiga!',20,' ')
  422.         call open(file,scorepath,'w') ; call writeln(file,mstring)
  423.         do i=1 to 5 ; s1=n.i||s.i ; call writeln(file,s1) ; end
  424.         call close(file)
  425.     return
  426.  
  427. READMAINT:
  428.         if ~exists(scorepath) then do ; parse var mstring m1 m2 m3 m4 m0
  429.             return ; end
  430.         call open(file,scorepath,'r')
  431.         s0=readln(file) ; do i=1 to 5
  432.         s.i=readln(file) ; end ; call close(file)
  433.         parse var s0 m1 m2 m3 m4 m0
  434.         think=20 ; if m3='Guess' then think=40
  435.         if m3='Try' then think=30
  436.     return
  437.  
  438. MAINT2:
  439.         tr 'f1n2z7 c1WORDO Maint: z0n1'
  440.         tr '    c71c6. c5Reset WORDO & High Scores.'
  441.         tr '    c72c6. c2Can Amiga Get High Scores  c7: c3'm1
  442.         tr '    c73c6. c5Use Alias in High Scores   c7: c3'm2
  443.         tr '    c74c6. c2Play Level of the Amiga    c7: c3'm3
  444.         tr '    c75c6. c5Allow the Hint Option      c7: c3'm4
  445.         tr '    c76c6. c2Save & Quit WORDO Maint.n1'
  446.         se 'c1Option: c4' ; getchar ; an=result ; call CUTOFF
  447.         if an<1 | an>6 then signal MAINT2 ; else tr an
  448.         if an=6 & fl=0 then do ; tr 'n1c7Quitting...' ; return ; end
  449.         if an=6 & fl=1 then do ; call SAVEMAINT ; return ; end
  450.         if an=1 then do ; tr 'n1c7Resetting Wordo...' ; call MAKESCORES
  451.             tr 'n1Wordo Reset.w2' ; signal MAINT ; end
  452.         if an=2 then m1=subword('No Yes',pos(left(m1,1),'YN',1),1) ; fl=1
  453.         if an=3 then m2=subword('No Yes',pos(left(m2,1),'YN',1),1) ; fl=1
  454.         if an=5 then m4=subword('No Yes',pos(left(m4,1),'YN',1),1) ; fl=1
  455.         if an~=4 then signal MAINT2
  456.         tr 'n1c6The c5Amiga c6opponent will:n1' ; fl=1
  457.         tr 'c71c6. c5Guessn1c72c6. c2Tryn1c73c6. c5Thinkn2c6to win the game.n1'
  458.         se 'c7Which level? c3' ; getchar ; an=result ; call CUTOFF
  459.         if an<1 | an>3 then a=2
  460.         m3='Think' ; if an=1 then m3='Guess'
  461.         if an=2 then m3='Try'
  462.     signal MAINT2
  463.  
  464. SAVEMAINT:
  465.         se 'n1c7Saving c1parameters...'
  466.         s0=m1||' '||m2||' '||m3||' '||m4||' 0'
  467.         call open(file,scorepath,'w')
  468.         call writeln(file,s0) ; do i=1 to 5
  469.         call writeln(file,s.i) ; end
  470.         call close(file) ; tr 'hahac1Parameters c7saved.'
  471.     return
  472.  
  473. FINISH:
  474.         se comstr'c7Are you sure? ' ; call GCHAR
  475.         if an="N" then do ; call CLINE ; signal PLAY ; end
  476.  
  477. FINISH2:
  478.         tr 'f0nc' ; sp=copies(" ",78) ; do i=1 to 5 ; tr sp ; end
  479.         tr 'f0nd>fc7Your word was: z3c1'yourword'z0c7   Your total is: z3c1 'totpips' z0'
  480.         tr 'n1c7>f  My word was: z3c4'myword'z0c7     My total is: z3c4 'mytotpips' z0'
  481.         se 'n1>fc2Want to play another game? c6(c5Yc6/c5nc6)c2: c3'
  482.         call GCHAR ; if an="N" then signal QUIT
  483.         tr 'f1n9c7Please hold...n2' ; signal START
  484.  
  485. QUIT:
  486.         tr 'f1ndc5We will meet again, human...'
  487.         le='c7Played z1c3 W O R D O   2 . 0 z0q1'
  488.     signal LEAVE
  489.  
  490. CUTOFF:
  491.         if result~="###PANIC" then return
  492.         tr 'f1ndc1No carrier detected...'
  493.         le='c7Loss of Carrier: c6(z1c3 W O R D O z0c6)q1'
  494.     signal LEAVE
  495.  
  496. LEAVE: ; logentry le ; bufferflush ; exit
  497.  
  498. SYNTAX:;ERROR:;IOERR:;e1=' Error: 'rc' ('errortext(rc)')'
  499.   e2='  Line: 'left(sigl,4)'File:';gu 1311992;a=result;gu 1311960;b=result;c='"'a||b'"';e2=e2' 'c;tr e1;tr e2;logentry e1;logentry e2
  500.   e=sourceline(sigl);do while e~='';e3='Source: 'left(e,37);tr e3;logentry e3;e=substr(e,38);end;bufferflush;exit
  501. /** Last Edited: 7-Oct-95 *************************************************\
  502. \****************************************** Frontiers BBS (716)/823-9892 **/
  503.